namespace GemBox.Spreadsheet
{
    using System;

    internal abstract class XlsxDirector
    {
        protected PackageBuilderBase builder;
        internal const string calcChainContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml";
        internal const string commentContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml";
        protected const string commentsRelationshipSchema = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments";
        protected const string contentTypePrefix = "application/vnd.openxmlformats-";
        internal const string contentTypesXmlPath = "/[Content_Types].xml";
        protected const int defaultColumnWidth = 0x86e;
        internal const string drawingContentType = "application/vnd.openxmlformats-officedocument.drawing+xml";
        protected const string drawingRelationshipSchema = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing";
        protected const string drawingShape = ".OpenXml.DrawingParts.VmlDrawingShape.txt";
        protected const string drawingXmlPath = "/xl/drawings/";
        protected ExcelFile excelFile;
        protected const string hyperlinkRelationshipSchema = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink";
        protected const string imageRelationshipSchema = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image";
        protected const string mediaPath = "/xl/media/";
        internal const string relationshipContentType = "application/vnd.openxmlformats-package.relationships+xml";
        protected const string relationshipsSchema = "http://schemas.openxmlformats.org/officeDocument/2006/relationships";
        protected const string schemasPrefix = "http://schemas.openxmlformats.org";
        protected const string sharedStringsXmlPath = "/xl/sharedStrings.xml";
        protected const string sheetRelationshipSchema = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet";
        protected const string stringsContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml";
        protected const string stringsSchema = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings";
        protected const string stylesXmlContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml";
        protected const string stylesXmlPath = "/xl/styles.xml";
        protected const string vmlDrawingBegining = ".OpenXml.DrawingParts.VmlDrawingBegining.txt";
        internal const string vmlDrawingContentType = "application/vnd.openxmlformats-officedocument.vmlDrawing";
        protected const string vmlDrawingRelationshipSchema = "http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing";
        protected const string workbookContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml";
        protected const string workbookXmlPath = "/xl/workbook.xml";
        protected const string worksheetContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml";
        protected const string xlDirectoryPath = "/xl/";
        internal const string xmlContentType = "application/xml";
        internal const string xmlnsContentTypesSchema = "http://schemas.openxmlformats.org/package/2006/content-types";
        protected const string xmlnsDrawingMainSchema = "http://schemas.openxmlformats.org/drawingml/2006/main";
        internal const string xmlnsExcelSchema = "urn:schemas-microsoft-com:office:excel";
        protected const string xmlnsMainSchema = "http://schemas.openxmlformats.org/spreadsheetml/2006/main";
        internal const string xmlnsOfficeSchema = "urn:schemas-microsoft-com:office:office";
        internal const string xmlnsRelationshipsSchema = "http://schemas.openxmlformats.org/package/2006/relationships";
        protected const string xmlnsSpreadsheetDrawingSchema = "http://schemas.openxmlformats.org/drawingml/2006/spreadsheetDrawing";
        internal const string xmlnsVmlSchema = "urn:schemas-microsoft-com:vml";

        public XlsxDirector(PackageBuilderBase builder, ExcelFile excelFile)
        {
            this.builder = builder;
            this.excelFile = excelFile;
        }

        public abstract void Construct();
    }
}
